package com.xinlu.user.action;

import org.apache.commons.lang.StringUtils;

import com.xinlu.common.exception.LogicException;
import com.xinlu.common.game.bo.ConstantLstBo;
import com.xinlu.derek.common.BaseAction;
import com.xinlu.derek.common.BaseForm;
import com.xinlu.persistence.Users;
import com.xinlu.persistence.Wzpz;
import com.xinlu.user.bo.UsersBo;
import com.xinlu.user.form.HybjForm;
import com.xinlu.util.tool.DateUtil;

public class HybjAction extends BaseAction {

	HybjForm fr = new HybjForm();
	private UsersBo usersBo;

	public void setFr(HybjForm fr) {
		this.fr = fr;
	}

	public void setUsersBo(UsersBo usersBo) {
		this.usersBo = usersBo;
	}

	@Override
	public String doExecute() throws Exception {
		return null;
	}

	@Override
	public void formInit() {
	}

	@Override
	public BaseForm getModel() {
		return fr;
	}

	/**
	 * 加载页面
	 * 
	 * @return
	 */
	public String loadPage() {

		if (ConstantLstBo.isNullOrEmpty(fr.getCrtYhm())) {
			throw new LogicException("加载失败，用户名为空.");
		}

		Users crtUser = usersBo.loadUser(fr.getCrtYhm());
		Users loginUser = (Users) getSession().getAttribute("userinfo");
		Wzpz wzpz = (Wzpz) getSession().getAttribute("wzpz");

		Double zsszjfd = Double.parseDouble(wzpz.getXjbzjsfd().toString());
		fr.setRateA1Fw(ConstantLstBo.getDoubleValue(loginUser.getRateA1()) - zsszjfd);
		fr.setRateA2Fw(ConstantLstBo.getDoubleValue(loginUser.getRateA2()) - zsszjfd);
		fr.setRateA3Fw(ConstantLstBo.getDoubleValue(loginUser.getRateA3()) - zsszjfd);
		fr.setRateA4Fw(ConstantLstBo.getDoubleValue(loginUser.getRateA4()) - zsszjfd);
		fr.setRateB1Fw(ConstantLstBo.getDoubleValue(loginUser.getRateB1()) - zsszjfd);
		fr.setRateB2Fw(ConstantLstBo.getDoubleValue(loginUser.getRateB2()) - zsszjfd);
		fr.setRateB3Fw(ConstantLstBo.getDoubleValue(loginUser.getRateB3()) - zsszjfd);
		fr.setRateB4Fw(ConstantLstBo.getDoubleValue(loginUser.getRateB4()) - zsszjfd);
		fr.setRateC1Fw(ConstantLstBo.getDoubleValue(loginUser.getRateC1()) - zsszjfd);
		fr.setRateC2Fw(ConstantLstBo.getDoubleValue(loginUser.getRateC2()) - zsszjfd);
		fr.setRateC3Fw(ConstantLstBo.getDoubleValue(loginUser.getRateC3()) - zsszjfd);
		fr.setRateC4Fw(ConstantLstBo.getDoubleValue(loginUser.getRateC4()) - zsszjfd);

		fr.setMss(crtUser.getMss().split(","));

		fr.setBh1700(crtUser.getMss().contains("1700") ? 1 : 0);
		fr.setBh1800(crtUser.getMss().contains("1800") ? 1 : 0);
		fr.setBh1900(crtUser.getMss().contains("1900") ? 1 : 0);

		fr.setDaili(crtUser.getDaili() + "");

		fr.setRateA1(ConstantLstBo.getDoubleValue(crtUser.getRateA1()) + "");
		fr.setRateA2(ConstantLstBo.getDoubleValue(crtUser.getRateA2()) + "");
		fr.setRateA3(ConstantLstBo.getDoubleValue(crtUser.getRateA3()) + "");
		fr.setRateA4(ConstantLstBo.getDoubleValue(crtUser.getRateA4()) + "");
		fr.setRateB1(ConstantLstBo.getDoubleValue(crtUser.getRateB1()) + "");
		fr.setRateB2(ConstantLstBo.getDoubleValue(crtUser.getRateB2()) + "");
		fr.setRateB3(ConstantLstBo.getDoubleValue(crtUser.getRateB3()) + "");
		fr.setRateB4(ConstantLstBo.getDoubleValue(crtUser.getRateB4()) + "");
		fr.setRateC1(ConstantLstBo.getDoubleValue(crtUser.getRateC1()) + "");
		fr.setRateC2(ConstantLstBo.getDoubleValue(crtUser.getRateC2()) + "");
		fr.setRateC3(ConstantLstBo.getDoubleValue(crtUser.getRateC3()) + "");
		fr.setRateC4(ConstantLstBo.getDoubleValue(crtUser.getRateC4()) + "");

		return "hybj";
	}

	/**
	 * 更新用户
	 * 
	 * @return
	 * @throws Exception
	 */
	public String updateUser() throws Exception {

		if (ConstantLstBo.isNullOrEmpty(fr.getCrtYhm())) {
			throw new LogicException("更新失败，用户名为空.");
		}

		Users crtUser = usersBo.loadUser(fr.getCrtYhm());
		Users loginUser = (Users) getSession().getAttribute("userinfo");

		if (1 == fr.getBh1700()) {
			if (ConstantLstBo.getDoubleValue(fr.getRateA1()) > ConstantLstBo.getDoubleValue(loginUser.getRateA1())) {
				throw new Exception("1700模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateA2()) > ConstantLstBo.getDoubleValue(loginUser.getRateA2())) {
				throw new Exception("1700不定位设置出错。");
			}
			if (ConstantLstBo.getDoubleValue(fr.getRateA3()) > ConstantLstBo.getDoubleValue(loginUser.getRateA3())) {
				throw new Exception("1700模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateA4()) > ConstantLstBo.getDoubleValue(loginUser.getRateA4())) {
				throw new Exception("1700不定位设置出错。");
			}
		}
		if (1 == fr.getBh1800()) {
			if (ConstantLstBo.getDoubleValue(fr.getRateB1()) > ConstantLstBo.getDoubleValue(loginUser.getRateB1())) {
				throw new Exception("1800模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateB2()) > ConstantLstBo.getDoubleValue(loginUser.getRateB2())) {
				throw new Exception("1800不定位设置出错。");
			}
			if (ConstantLstBo.getDoubleValue(fr.getRateB3()) > ConstantLstBo.getDoubleValue(loginUser.getRateB3())) {
				throw new Exception("1800模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateB4()) > ConstantLstBo.getDoubleValue(loginUser.getRateB4())) {
				throw new Exception("1800不定位设置出错。");
			}
		}
		if (1 == fr.getBh1900()) {
			if (ConstantLstBo.getDoubleValue(fr.getRateC1()) > ConstantLstBo.getDoubleValue(loginUser.getRateC1())) {
				throw new Exception("1900模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateC2()) > ConstantLstBo.getDoubleValue(loginUser.getRateC2())) {
				throw new Exception("1900不定位设置出错。");
			}
			if (ConstantLstBo.getDoubleValue(fr.getRateC3()) > ConstantLstBo.getDoubleValue(loginUser.getRateC3())) {
				throw new Exception("1900模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateC4()) > ConstantLstBo.getDoubleValue(loginUser.getRateC4())) {
				throw new Exception("1900不定位设置出错。");
			}
		}
		if (!(fr.getLimit() >= 0 && fr.getLimit() <= 10000)) {
			throw new Exception("奖金限额出错。");
		}

		crtUser.setDaili(Integer.parseInt(fr.getDaili()));
		crtUser.setLimit(fr.getLimit());
		crtUser.setMss(StringUtils.join(fr.getMss(), ","));

		if (1 == fr.getBh1700()) {
			crtUser.setRateA1(fr.getRateA1());
			crtUser.setRateA2(fr.getRateA2());
			crtUser.setRateA3(fr.getRateA3());
			crtUser.setRateA4(fr.getRateA4());
		}
		if (1 == fr.getBh1800()) {
			crtUser.setRateB1(fr.getRateB1());
			crtUser.setRateB2(fr.getRateB2());
			crtUser.setRateB3(fr.getRateB3());
			crtUser.setRateB4(fr.getRateB4());
		}
		if (1 == fr.getBh1900()) {
			crtUser.setRateC1(fr.getRateC1());
			crtUser.setRateC2(fr.getRateC2());
			crtUser.setRateC3(fr.getRateC3());
			crtUser.setRateC4(fr.getRateC4());
		}

		crtUser.setSavetime(DateUtil.getCurrentDateTimestamp());
		usersBo.update(crtUser);

		return "hygl";
	}

}
